/**
 * 更新图例可见性
 * @param {string|boolean} showValue - 可见性值，'true'或true表示显示
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateLegendVisibility(showValue, currentOptions) {
    const isShow = showValue === 'true' || showValue === true;

    if (!currentOptions.legend) {
        currentOptions.legend = [{
            show: true,
            data: []
        }];
    }

    if (Array.isArray(currentOptions.legend)) {
        currentOptions.legend[0].show = isShow;
    } else {
        currentOptions.legend.show = isShow;
    }

    return currentOptions;
}

/**
 * 更新图例位置
 * @param {string} position - 位置属性（如left、top等）
 * @param {string|number} value - 位置值
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateLegendPosition(position, value, currentOptions) {
    if (!currentOptions.legend) {
        currentOptions.legend = [{ show: true }];
    }
    currentOptions.legend[0][position] = value.includes('%') ? value : `${value}%`;
    return currentOptions;
}

/**
 * 更新图例文本样式
 * @param {string} styleProp - 样式属性名称
 * @param {*} value - 样式属性值
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateLegendTextStyle(styleProp, value, currentOptions) {
    if (!currentOptions.legend) {
        currentOptions.legend = [{ show: true, textStyle: {} }];
    }
    currentOptions.legend[0].textStyle = currentOptions.legend[0].textStyle || {};
    currentOptions.legend[0].textStyle[styleProp] = value;
    return currentOptions;
}

/**
 * 更新图例项样式
 * @param {string} styleProp - 样式属性名称
 * @param {*} value - 样式属性值
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateLegendItemStyle(styleProp, value, currentOptions) {
    if (!currentOptions.legend) {
        currentOptions.legend = [{ show: true }];
    }
    currentOptions.legend[0][styleProp] = value;
    return currentOptions;
}

/**
 * 更新图例项之间的间距
 * @param {number} value - 间距值
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateLegendItemGap(value, currentOptions) {
    if (!currentOptions.legend) {
        currentOptions.legend = [{ show: true }];
    }
    currentOptions.legend[0].itemGap = value;
    return currentOptions;
}

/**
 * 更新图例文本字体粗细
 * @param {string} value - 字体粗细值
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateLegendFontWeight(value, currentOptions) {
    if (!currentOptions.legend) {
        currentOptions.legend = [{ show: true, textStyle: {} }];
    }
    currentOptions.legend[0].textStyle = currentOptions.legend[0].textStyle || {};
    currentOptions.legend[0].textStyle.fontWeight = value;
    return currentOptions;
}

/**
 * 更新图例排列方向
 * @param {string} value - 排列方向（horizontal或vertical）
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateLegendOrientation(value, currentOptions) {
    if (!currentOptions.legend) {
        currentOptions.legend = [{ show: true }];
    }
    currentOptions.legend[0].orient = value;
    return currentOptions;
}

/**
 * 更新图例选择模式
 * @param {string} value - 选择模式（single、multiple或false）
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateLegendSelectMode(value, currentOptions) {
    if (!currentOptions.legend) {
        currentOptions.legend = [{ show: true }];
    }
    currentOptions.legend[0].selectMode = value;
    return currentOptions;
}

/**
 * 更新图例项样式颜色
 * @param {string} value - 颜色值
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateLegendItemStyleColor(value, currentOptions) {
    if (currentOptions.legend) {
        currentOptions.legend[0] = currentOptions.legend[0] || {};
        currentOptions.legend[0].itemStyle = currentOptions.legend[0].itemStyle || {};
        currentOptions.legend[0].itemStyle.color = value;
    }
    return currentOptions;
}
